function mySetInterval(fn, time = 1000) {
  let timer = null,
    isClear = false;
  function interval() {
    if (isClear) {
      isClear = false;
      clearTimeout(timer);
      return;
    }
    fn();
    timer = setTimeout(interval, time);
  }

  timer = setTimeout(interval, time);

  return () => {
    isClear = true;
  };
}

// let a = mySettimeout(() => {
//   console.log(111);
// }, 1000)
// let cancel = mySettimeout(() => {
//   console.log(222)
// }, 1000)
// cancel()

//   作者：Big shark@LX
//   链接：https://juejin.cn/post/7004638318843412493
//   来源：稀土掘金
//   著作权归作者所有。商业转载请联系作者获得授权，非商业转载请注明出处。

let mySetInterval1 = function (fn, timer) {
  //带有清除的功能
  let isCancel = false
  let timid = null

  function interval() {
    if (isCancel) {
      isCancel = false
      clearTimeout(timid)
      return
    }
    fn()
    timid = setTimeout(() => {
      interval()
    }, timer);
  }
  interval()

  return function cancel() {
    isCancel = true
  }
}